```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>深入理解Spring IOC容器 | 技术小馆</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        .hero-title {
            font-family: 'Noto Serif SC', serif;
            font-weight: 700;
        }
        .drop-cap::first-letter {
            font-size: 3.5em;
            float: left;
            line-height: 0.8;
            margin-right: 0.1em;
            margin-top: 0.15em;
            font-weight: 700;
            color: #4f46e5;
        }
        .code-block {
            font-family: 'Courier New', Courier, monospace;
            background-color: #f8fafc;
            border-left: 4px solid #4f46e5;
            padding: 1rem;
            border-radius: 0 0.5rem 0.5rem 0;
        }
        .card-hover:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
        }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Hero Section -->
    <div class="relative bg-gradient-to-r from-indigo-600 to-purple-600 text-white py-20 px-4 sm:px-6 lg:px-8">
        <div class="max-w-5xl mx-auto text-center">
            <div class="mb-6">
                <span class="inline-block px-3 py-1 text-xs font-semibold bg-white bg-opacity-25 rounded-full">Spring框架核心概念</span>
            </div>
            <h1 class="hero-title text-4xl md:text-5xl lg:text-6xl mb-6 leading-tight">
                深入理解Spring <span class="text-indigo-200">IOC容器</span>
            </h1>
            <p class="text-xl md:text-2xl text-indigo-100 max-w-3xl mx-auto">
                控制反转与依赖注入——现代Java开发的基石
            </p>
            <div class="mt-10">
                <a href="#content" class="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-indigo-700 bg-white hover:bg-indigo-50 transition duration-300">
                    <i class="fas fa-book-reader mr-2"></i> 开始阅读
                </a>
            </div>
        </div>
        <div class="absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-gray-50 to-transparent"></div>
    </div>

    <!-- Main Content -->
    <div id="content" class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
        <!-- Introduction -->
        <div class="mb-16">
            <div class="prose prose-lg max-w-none">
                <p class="drop-cap">
                    Spring框架的核心容器是指IoC容器（Inversion of Control Container）。IoC容器是Spring框架的核心组件，负责管理应用程序中的对象（也称为Bean）的生命周期和依赖关系。它通过依赖注入（DI）的方式，将对象之间的依赖关系交由容器来管理和解决。
                </p>
                <p>
                    IoC容器的核心思想是控制反转，即将对象的创建、依赖解析和生命周期管理的控制权交给容器，而不是由开发人员手动管理。这种方式使得应用程序的组件更加松耦合、可维护性更高，同时也方便进行单元测试和扩展。
                </p>
            </div>
        </div>

        <!-- Key Concepts -->
        <div class="grid md:grid-cols-2 gap-8 mb-16">
            <div class="bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300 card-hover">
                <div class="p-6">
                    <div class="flex items-center mb-4">
                        <div class="flex-shrink-0 bg-indigo-500 p-2 rounded-lg text-white">
                            <i class="fas fa-question-circle text-xl"></i>
                        </div>
                        <h3 class="ml-3 text-lg font-semibold">1. IOC什么意思？</h3>
                    </div>
                    <div class="mt-2 text-gray-600">
                        <p>控制反转，把对象的创建权限由IOC容器来管理，开发人员只负责使用即可。</p>
                    </div>
                </div>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300 card-hover">
                <div class="p-6">
                    <div class="flex items-center mb-4">
                        <div class="flex-shrink-0 bg-purple-500 p-2 rounded-lg text-white">
                            <i class="fas fa-code text-xl"></i>
                        </div>
                        <h3 class="ml-3 text-lg font-semibold">2. 项目中的哪行代码是IOC？</h3>
                    </div>
                    <div class="mt-2 text-gray-600">
                        <p>加了@Controller,@Service，@Component这些注解的Bean才是IOC</p>
                    </div>
                </div>
            </div>
        </div>

        <!-- IOC vs DI -->
        <div class="mb-16">
            <div class="bg-white rounded-xl shadow-md overflow-hidden">
                <div class="p-6">
                    <div class="flex items-center mb-4">
                        <div class="flex-shrink-0 bg-pink-500 p-2 rounded-lg text-white">
                            <i class="fas fa-exchange-alt text-xl"></i>
                        </div>
                        <h3 class="ml-3 text-2xl font-semibold">3. IOC和DI有什么区别？</h3>
                    </div>
                    <div class="mt-4 grid md:grid-cols-2 gap-8">
                        <div>
                            <h4 class="text-lg font-medium text-indigo-700 mb-3">IOC - 控制反转</h4>
                            <p class="text-gray-600 mb-4">Bean的创建(new)，生命周期</p>
                            <div class="code-block">
                                <code>
                                    @RestController<br>
                                    public class EmpController {<br>
                                    }
                                </code>
                            </div>
                        </div>
                        <div>
                            <h4 class="text-lg font-medium text-purple-700 mb-3">DI - 依赖注入</h4>
                            <p class="text-gray-600 mb-4">Bean的依赖注入，强调的是Bean和Bean之间的依赖关系</p>
                            <div class="code-block">
                                <code>
                                    @Autowired<br>
                                    private EmpService empService;
                                </code>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Core Container Explanation -->
        <div class="mb-16">
            <h2 class="text-3xl font-bold text-gray-900 mb-6">Spring核心容器详解</h2>
            <div class="prose prose-lg max-w-none">
                <p>
                    Spring框架的核心容器包含两个主要的接口：BeanFactory和ApplicationContext。
                </p>
                <p>
                    <strong>BeanFactory</strong>是Spring框架最基础的接口，提供了IoC容器最基本的功能。它负责实例化、配置和管理Bean对象。BeanFactory的实现类可以通过XML配置文件、注解或Java代码来定义和配置Bean。
                </p>
                <p>
                    <strong>ApplicationContext</strong>是BeanFactory的子接口，提供了更多的功能和扩展性。ApplicationContext在BeanFactory的基础上，增加了国际化支持、事件传播、资源加载、AOP支持等功能。它是开发中更常用的接口，可以通过ClassPathXmlApplicationContext、FileSystemXmlApplicationContext等实现类来创建。
                </p>
            </div>
        </div>

        <!-- Visualization -->
        <div class="mb-16">
            <h2 class="text-3xl font-bold text-gray-900 mb-6">IOC容器工作原理</h2>
            <div class="bg-white p-6 rounded-xl shadow-md">
                <div class="mermaid">
                    graph TD
                        A[Spring配置] -->|XML/注解/Java| B[IOC容器]
                        B --> C[创建Bean实例]
                        C --> D[依赖注入]
                        D --> E[初始化Bean]
                        E --> F[使用Bean]
                        F --> G[销毁Bean]
                        style A fill:#f0f9ff,stroke:#4f46e5
                        style B fill:#eef2ff,stroke:#4f46e5
                        style C fill:#ecfdf5,stroke:#10b981
                        style D fill:#f5f3ff,stroke:#8b5cf6
                        style E fill:#fffbeb,stroke:#f59e0b
                        style F fill:#f0fdf4,stroke:#10b981
                        style G fill:#fef2f2,stroke:#ef4444
                </div>
            </div>
        </div>

        <!-- Key Benefits -->
        <div class="mb-16">
            <h2 class="text-3xl font-bold text-gray-900 mb-6">IOC容器的主要优势</h2>
            <div class="grid md:grid-cols-3 gap-6">
                <div class="bg-white p-6 rounded-lg shadow-sm border-l-4 border-indigo-500">
                    <div class="text-indigo-500 mb-3">
                        <i class="fas fa-puzzle-piece text-2xl"></i>
                    </div>
                    <h3 class="text-xl font-semibold mb-2">松耦合</h3>
                    <p class="text-gray-600">组件之间的依赖关系由容器管理，减少硬编码依赖</p>
                </div>
                <div class="bg-white p-6 rounded-lg shadow-sm border-l-4 border-purple-500">
                    <div class="text-purple-500 mb-3">
                        <i class="fas fa-cogs text-2xl"></i>
                    </div>
                    <h3 class="text-xl font-semibold mb-2">可维护性</h3>
                    <p class="text-gray-600">集中管理对象生命周期，便于修改和扩展</p>
                </div>
                <div class="bg-white p-6 rounded-lg shadow-sm border-l-4 border-pink-500">
                    <div class="text-pink-500 mb-3">
                        <i class="fas fa-flask text-2xl"></i>
                    </div>
                    <h3 class="text-xl font-semibold mb-2">易于测试</h3>
                    <p class="text-gray-600">依赖注入使得单元测试更加容易实现</p>
                </div>
            </div>
        </div>

        <!-- Summary -->
        <div class="bg-indigo-50 rounded-xl p-8 mb-16">
            <div class="flex items-start">
                <div class="flex-shrink-0 mr-4 text-indigo-700">
                    <i class="fas fa-lightbulb text-3xl"></i>
                </div>
                <div>
                    <h3 class="text-2xl font-bold text-indigo-900 mb-4">总结</h3>
                    <div class="prose prose-indigo">
                        <p>
                            通过核心容器，开发人员可以更加专注于业务逻辑的实现，而不需要关注对象的创建和依赖关系的管理。同时，容器还提供了很多可扩展的功能，如AOP、事务管理、数据访问等，进一步简化了开发过程。
                        </p>
                        <p>
                            Spring框架的核心容器是IoC容器，它负责管理Bean对象的生命周期和依赖关系，提供了更加灵活和可维护的开发模式，使得应用程序的开发更加简单和高效。
                        </p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Footer -->
    <footer class="bg-gray-900 text-gray-300 py-12">
        <div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8">
            <div class="text-center">
                <h3 class="text-lg font-semibold text-white mb-2">技术小馆</h3>
                <a href="http://www.yuque.com/jtostring" class="text-indigo-400 hover:text-indigo-300 transition duration-300">
                    <i class="fas fa-globe mr-1"></i> http://www.yuque.com/jtostring
                </a>
            </div>
        </div>
    </footer>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: false,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>
```